Data storage systems typically store the data and metadata of file systems in blocks of storage. For example, the file data constituting files in a file system are stored in blocks of storage, as are inodes, indirect blocks, and other metadata. Data storage systems may also provision storage to file systems in units of fixed size, known as “slices.” Data storage systems generate slices, for example, from one or more physical storage devices, such as RAID groups of physical storage devices.
Some conventional data storage systems provide thick provisioning of storage resources. Such data storage systems allocate a specified amount of physical storage space to a file system. In thick provisioning, allocated slices occupy all of an address space of a file system.
Other data storage systems provide thin provisioning of storage resources. In thin provisioning, a file system typically has a very large address space but is allocated specific storage slices to populate the file system only as storage is needed to satisfy write requests. Thus, in thin provisioning, a file system may have an address space that is measured in petabytes but may be allocated slices to occupy only a small fraction of the address space.